import { defineConfig, loadEnv } from 'vite'
import type { ConfigEnv } from 'vite'
import { createPlugins } from './build/vite/plugins'
import { createServer } from './build/vite/server'
import { createResolve } from './build/vite/resolve'
import { createCss } from './build/vite/css'

/**
 * Vite 配置
 * @param mode - 环境模式
 * @returns Vite 配置对象
 */
export default defineConfig(({ mode }: ConfigEnv) => {
  // 加载环境变量
  const env = loadEnv(mode, process.cwd())

  return {
    // 插件配置
    plugins: createPlugins(env),

    // 开发服务器配置
    server: createServer(env),

    // 路径解析配置
    resolve: createResolve(),

    // CSS 配置
    css: createCss(),

    // 全局变量定义
    define: {
      __APP_ENV__: JSON.stringify(env.VITE_APP_ENV)
    }
  }
})
